define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts'], function ($, undefined, Backend, Table, Form, echarts) {

    var Controller = {
        index: function () {
            // 初始化图表
            Controller.api.initCharts();
            
            // 加载员工列表
            Controller.api.loadUsers();
            
            // 页面加载时执行一次查询
            Controller.api.loadWageStatistics();
            
            // 绑定事件
            Controller.api.bindEvents();
        },
        
        detail: function () {
            // 加载员工列表
            Controller.api.loadUsers();
            
            // 页面加载时执行一次查询
            Controller.api.loadDetailData();
            
            // 绑定事件
            Controller.api.bindEvents();
        },
        
        api: {
            // 初始化图表
            initCharts: function() {
                // 工资类型分布图表
                window.wageTypeChart = echarts.init(document.getElementById('wageTypeChart'));
                
                // 员工工资排行图表
                window.wageRankChart = echarts.init(document.getElementById('wageRankChart'));
                
                // 窗口大小改变时重绘图表
                $(window).on('resize', function() {
                    if (window.wageTypeChart) {
                        window.wageTypeChart.resize();
                    }
                    if (window.wageRankChart) {
                        window.wageRankChart.resize();
                    }
                });
            },
            
            // 加载员工列表
            loadUsers: function() {
                $.get('scanwork/active_wage_statistics/getUsers', function(response) {
                    if (response.code === 1) {
                        var userSelect = $('#userId');
                        response.data.forEach(function(user) {
                            userSelect.append('<option value="' + user.id + '">' + user.name + '</option>');
                        });
                    }
                });
            },
            
            // 加载工资统计数据
            loadWageStatistics: function() {
                var params = {
                    start_date: $('#startDate').val(),
                    end_date: $('#endDate').val(),
                    user_id: $('#userId').val(),
                    wage_type: $('#wageType').val()
                };
                
                $.ajax({
                    url: 'scanwork/active_wage_statistics/index',
                    method: 'GET',
                    data: params,
                    success: function(response) {
                        if (response.code === 1) {
                            Controller.api.updateStatistics(response.data);
                        } else {
                            Toastr.error(response.msg || '获取统计数据失败');
                        }
                    },
                    error: function() {
                        Toastr.error('网络错误，请重试');
                    }
                });
            },
            
            // 更新统计数据
            updateStatistics: function(data) {
                // 更新统计卡片
                $('#employeeCount').text(data.user_stats.length);
                $('#totalWage').text('￥' + data.total_stats.total_wage.toFixed(2));
                $('#totalHours').text(data.total_stats.total_hours.toFixed(1) + '小时');
                $('#reportCount').text(data.total_stats.report_count);
                
                // 更新工资类型分布图表
                Controller.api.updateWageTypeChart(data.total_stats);
                
                // 更新员工工资排行图表
                Controller.api.updateWageRankChart(data.user_stats);
                
                // 更新员工统计表格
                Controller.api.updateWageTable(data.user_stats);
                
                // 更新详细数据表格
                Controller.api.updateDetailTable(data.detail_list);
            },
            
            // 更新工资类型分布图表
            updateWageTypeChart: function(totalStats) {
                var option = {
                    title: {
                        text: '工资类型分布',
                        left: 'center'
                    },
                    tooltip: {
                        trigger: 'item',
                        formatter: '{a} <br/>{b}: {c} ({d}%)'
                    },
                    legend: {
                        orient: 'vertical',
                        left: 'left',
                        data: ['计件工资', '计时工资']
                    },
                    series: [
                        {
                            name: '工资类型',
                            type: 'pie',
                            radius: '50%',
                            data: [
                                {
                                    value: totalStats.total_piece_wage,
                                    name: '计件工资',
                                    itemStyle: {color: '#91cc75'}
                                },
                                {
                                    value: totalStats.total_time_wage,
                                    name: '计时工资',
                                    itemStyle: {color: '#5470c6'}
                                }
                            ],
                            emphasis: {
                                itemStyle: {
                                    shadowBlur: 10,
                                    shadowOffsetX: 0,
                                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                                }
                            }
                        }
                    ]
                };
                
                window.wageTypeChart.setOption(option);
            },
            
            // 更新员工工资排行图表
            updateWageRankChart: function(userStats) {
                // 按总工资排序，取前10名
                var sortedStats = userStats.sort(function(a, b) {
                    return b.total_wage - a.total_wage;
                }).slice(0, 10);
                
                var names = sortedStats.map(function(item) {
                    return item.user_name;
                });
                
                var wages = sortedStats.map(function(item) {
                    return item.total_wage;
                });
                
                var option = {
                    title: {
                        text: '员工工资排行(前10名)',
                        left: 'center'
                    },
                    tooltip: {
                        trigger: 'axis',
                        axisPointer: {
                            type: 'shadow'
                        }
                    },
                    xAxis: {
                        type: 'category',
                        data: names,
                        axisLabel: {
                            rotate: 45
                        }
                    },
                    yAxis: {
                        type: 'value',
                        name: '工资(元)'
                    },
                    series: [
                        {
                            name: '总工资',
                            type: 'bar',
                            data: wages,
                            itemStyle: {
                                color: function(params) {
                                    var colors = ['#91cc75', '#5470c6', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'];
                                    return colors[params.dataIndex % colors.length];
                                }
                            }
                        }
                    ]
                };
                
                window.wageRankChart.setOption(option);
            },
            
            // 更新员工统计表格
            updateWageTable: function(userStats) {
                var html = '';
                userStats.forEach(function(user) {
                    html += '<tr>';
                    html += '<td>' + user.user_name + '</td>';
                    html += '<td class="text-success">￥' + user.piece_wage.toFixed(2) + '</td>';
                    html += '<td class="text-info">￥' + user.time_wage.toFixed(2) + '</td>';
                    html += '<td class="text-primary"><strong>￥' + user.total_wage.toFixed(2) + '</strong></td>';
                    html += '<td>' + user.quantity + ' 件</td>';
                    html += '<td>' + user.work_hours.toFixed(1) + ' 小时</td>';
                    html += '<td>' + user.efficiency + '</td>';
                    html += '<td>￥' + user.avg_wage_per_hour.toFixed(2) + '</td>';
                    html += '<td>￥' + user.avg_wage_per_report.toFixed(2) + '</td>';
                    html += '<td>' + user.report_count + '</td>';
                    html += '<td>';
                    html += '<button class="btn btn-xs btn-primary" onclick="Controller.api.showUserDetail(' + user.user_id + ')">详情</button>';
                    html += '</td>';
                    html += '</tr>';
                });
                
                $('#wageTableBody').html(html);
            },
            
            // 更新详细数据表格
            updateDetailTable: function(detailList) {
                console.log('详细数据:', detailList); // 调试输出
                var html = '';
                detailList.forEach(function(item) {
                    var displayName = item.user_name || item.username || '员工' + item.user_id;
                    console.log('用户ID:', item.user_id, '显示名称:', displayName); // 调试输出
                    html += '<tr>';
                    html += '<td>' + displayName + '</td>';
                    html += '<td>' + (item.order_no || '') + '</td>';
                    html += '<td>' + (item.product_name || '') + '</td>';
                    html += '<td>' + (item.model_name || '') + '</td>';
                    html += '<td>' + (item.process_name || '') + '</td>';
                    html += '<td>' + item.quantity + ' 件</td>';
                    html += '<td>' + item.work_hours + ' 小时</td>';
                    html += '<td class="text-success">￥' + parseFloat(item.piece_wage).toFixed(2) + '</td>';
                    html += '<td class="text-info">￥' + parseFloat(item.time_wage).toFixed(2) + '</td>';
                    html += '<td class="text-primary"><strong>￥' + parseFloat(item.total_wage).toFixed(2) + '</strong></td>';
                    html += '<td>' + item.work_date + '</td>';
                    html += '<td>' + (item.audit_time ? new Date(item.audit_time * 1000).toLocaleString() : '') + '</td>';
                    html += '<td>' + (item.remark || '') + '</td>';
                    html += '</tr>';
                });
                
                $('#detailTableBody').html(html);
            },
            
            // 显示员工详情
            showUserDetail: function(userId) {
                // 这里可以加载员工的详细工资信息
                var params = {
                    start_date: $('#startDate').val(),
                    end_date: $('#endDate').val(),
                    user_id: userId
                };
                
                $.get('scanwork/active_wage_statistics/index', params, function(response) {
                    if (response.code === 1 && response.data.user_stats.length > 0) {
                        var userData = response.data.user_stats[0];
                        var html = '<div class="row">';
                        html += '<div class="col-md-6">';
                        html += '<h4>' + userData.user_name + ' 工资统计</h4>';
                        html += '<table class="table table-bordered">';
                        html += '<tr><td>计件工资</td><td class="text-success">￥' + userData.piece_wage.toFixed(2) + '</td></tr>';
                        html += '<tr><td>计时工资</td><td class="text-info">￥' + userData.time_wage.toFixed(2) + '</td></tr>';
                        html += '<tr><td>总工资</td><td class="text-primary"><strong>￥' + userData.total_wage.toFixed(2) + '</strong></td></tr>';
                        html += '<tr><td>生产数量</td><td>' + userData.quantity + ' 件</td></tr>';
                        html += '<tr><td>工作时长</td><td>' + userData.work_hours.toFixed(1) + ' 小时</td></tr>';
                        html += '<tr><td>效率</td><td>' + userData.efficiency + ' 件/小时</td></tr>';
                        html += '<tr><td>时薪</td><td>￥' + userData.avg_wage_per_hour.toFixed(2) + '/小时</td></tr>';
                        html += '<tr><td>报工次数</td><td>' + userData.report_count + '</td></tr>';
                        html += '</table>';
                        html += '</div>';
                        html += '<div class="col-md-6">';
                        html += '<h4>最近报工记录</h4>';
                        html += '<div style="max-height: 300px; overflow-y: auto;">';
                        html += '<table class="table table-striped">';
                        html += '<thead><tr><th>日期</th><th>备注</th><th>数量</th><th>工资</th></tr></thead>';
                        html += '<tbody>';
                        userData.reports.slice(0, 10).forEach(function(report) {
                            html += '<tr>';
                            html += '<td>' + report.work_date + '</td>';
                            html += '<td>' + (report.remark || '主动报工') + '</td>';
                            html += '<td>' + report.quantity + ' 件</td>';
                            html += '<td>￥' + parseFloat(report.total_wage).toFixed(2) + '</td>';
                            html += '</tr>';
                        });
                        html += '</tbody></table>';
                        html += '</div>';
                        html += '</div>';
                        html += '</div>';
                        
                        $('#userDetailContent').html(html);
                        $('#userDetailModal').modal('show');
                    }
                });
            },
            
            // 导出工资统计
            exportWageStatistics: function() {
                var params = {
                    start_date: $('#startDate').val(),
                    end_date: $('#endDate').val(),
                    user_id: $('#userId').val(),
                    wage_type: $('#wageType').val()
                };
                
                var url = 'scanwork/active_wage_statistics/export?' + $.param(params);
                window.open(url, '_blank');
            },
            
            // 加载详细数据
            loadDetailData: function() {
                var params = {
                    start_date: $('#startDate').val(),
                    end_date: $('#endDate').val(),
                    user_id: $('#userId').val()
                };
                
                $.ajax({
                    url: 'scanwork/active_wage_statistics/detail',
                    method: 'GET',
                    data: params,
                    success: function(response) {
                        if (response.code === 1) {
                            Controller.api.updateDetailStatistics(response.data);
                        } else {
                            Toastr.error(response.msg || '获取详细数据失败');
                        }
                    },
                    error: function() {
                        Toastr.error('网络错误，请重试');
                    }
                });
            },
            
            // 更新详细统计数据
            updateDetailStatistics: function(data) {
                // 计算统计信息
                var totalWage = 0;
                var totalHours = 0;
                var reportCount = data.length;
                var userIds = [];
                
                data.forEach(function(item) {
                    totalWage += parseFloat(item.total_wage);
                    totalHours += parseFloat(item.work_hours);
                    if (userIds.indexOf(item.user_id) === -1) {
                        userIds.push(item.user_id);
                    }
                });
                
                // 更新统计卡片
                $('#employeeCount').text(userIds.length);
                $('#totalWage').text('￥' + totalWage.toFixed(2));
                $('#totalHours').text(totalHours.toFixed(1) + '小时');
                $('#reportCount').text(reportCount);
                
                // 更新详细数据表格
                Controller.api.updateDetailTableFull(data);
            },
            
            // 更新详细数据表格（完整版）
            updateDetailTableFull: function(detailList) {
                var html = '';
                detailList.forEach(function(item) {
                    html += '<tr>';
                    html += '<td>' + (item.user_name || item.username || '员工' + item.user_id) + '</td>';
                    html += '<td>' + (item.username || '') + '</td>';
                    html += '<td>' + (item.order_no || '') + '</td>';
                    html += '<td>' + (item.product_name || '') + '</td>';
                    html += '<td>' + (item.model_name || '') + '</td>';
                    html += '<td>' + (item.process_name || '') + '</td>';
                    html += '<td>' + item.quantity + ' 件</td>';
                    html += '<td>' + item.work_hours + ' 小时</td>';
                    html += '<td>' + (item.start_time || '') + '</td>';
                    html += '<td>' + (item.end_time || '') + '</td>';
                    html += '<td class="text-success">￥' + parseFloat(item.piece_wage).toFixed(2) + '</td>';
                    html += '<td class="text-info">￥' + parseFloat(item.time_wage).toFixed(2) + '</td>';
                    html += '<td class="text-primary"><strong>￥' + parseFloat(item.total_wage).toFixed(2) + '</strong></td>';
                    html += '<td>' + item.work_date + '</td>';
                    html += '<td>' + (item.audit_time ? new Date(item.audit_time * 1000).toLocaleString() : '') + '</td>';
                    html += '<td>' + (item.remark || '') + '</td>';
                    html += '</tr>';
                });
                
                $('#detailTableBody').html(html);
            },
            
            // 查询详细数据
            searchDetail: function() {
                Controller.api.loadDetailData();
            },
            
            // 导出详细报表
            exportDetail: function() {
                var params = {
                    start_date: $('#startDate').val(),
                    end_date: $('#endDate').val(),
                    user_id: $('#userId').val()
                };
                
                var url = 'scanwork/active_wage_statistics/exportDetail?' + $.param(params);
                window.open(url, '_blank');
            },
            
            // 绑定事件
            bindEvents: function() {
                // 查询按钮事件已在HTML中绑定
                // 这里可以添加其他事件绑定
            }
        }
    };
    
    return Controller;
}); 